[アップデート] Resource Access Manager が ELB のトラストストアの共有をサポートしたので、別組織のメンバーアカウント間で共有してみた
いわさです。
Application Load Balancer では 2023 年の re:Invent の頃より、mTLS をサポートしています。
mTLS を使う場合にトラストストアを構成することが出来るのですが、私は複数の検証アカウントを使用しており、アカウントや環境が変わるごとに検証用のトラストストアを用意するのがちょっと面倒でした。
そんな中先日の RAM (Resource Access Manager)のアップデートで、この ELB のトラストストアがアカウント間共有出来るようになった気配を感じたので検証してみました。
アップデートアナウンスや Resource Access Manager のドキュメントではまだ確認が出来ないのですが、AWS CLI の v1.33.31 で次の更新を確認しています。
This release adds support for sharing trust stores across accounts and organizations through integration with AWS Resource Access Manager.
2024.08.06 追記
What's New でもアナウンスされました。
RAM で共有する
今回は異なる組織(Organizations)間のメンバーアカウント間で共有を行ってみます。
共有元アカウントでは次のようにトラストストアが既に存在してあります。
ELB のトラストストアの作成方法などについては冒頭の re:Invent アップデートブログをご参照ください。
RAM で新しいリソース共有を作成します。
リソース共有を作成する際にどのリソースを共有するのか検索して選択していくのですが、今回のアップデートで次のように「ELB Trust Stores」が選択出来るようになっています。
選択するとトラストストアの ARN というか ID が表示されるので、共有したいリソースを選択します。
ID 表示のためにどのトラストストアなのか間違えやすいのでご注意ください。私は間違えました。
RAM では共有するリソースタイプごとにどのプリンシパルにどういうアクセスを許可するか AWS マネージドポリシーのような形で設定されるのですが、ELB トラストストアの場合は次のような設定内容となっていました。
今回はこれを別組織の AWS アカウントに共有します。
「すべてのユーザーとの共有を許可」を選択し AWS アカウント ID を入力します。
その後作成を完了させると、共有元 AWS アカウント上では次のように新しいリソース共有が作成されていることが確認出来ます。
で、こちらを共有先の AWS アカウントで確認してみると、次のように RAM の「自分と共有 - リソースの共有」に保留中の共有が表示されていることが確認出来ると思います。
共有先でこの保留された共有を選択して、承認を行うことでリソース共有が完了し使うことが出来るようになります。
リソース共有が承認されると、共有先 AWS アカウント上の「自分と共有 - 共有リソース」で共有されたリソースが確認出来るようになります。
なお、承認されたリソース共有上に追加のリソースを追加した場合は再承認が不要ですぐに共有リソースが使い始めれるようになります。
共有されたトラストストアを共有先 AWS アカウントで使ってみる
共有されたトラストストアは自分で作成したリソースと同じように使用することが出来ます。
ELB のトラストストアコンソールを確認してみると、所有者が共有元 AWS アカウントであるトラストストアが追加されていることを確認できました。
ALB の HTTPS リスナーで mTLS を有効化し、トラストストアで検証するようにしてみましょう。
トラストストアの選択画面で共有されたリソースが選択できました。
カスタムドメインの名前解決だけしてやり、cURL でアクセスしてみます。
# クライアント証明書なし
% curl https://hoge0729.tak1wa.com/
curl: (56) OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0
# クライアント証明書あり
% curl --key my_client.key --cert myClient.pem https://hoge0729.tak1wa.com/
"Hello from Lambda!"%
選択したトラストストアに紐づいているクライアント証明書を使うことでアクセス出来ることを確認しました。
さいごに
本日は Resource Access Manager が ELB のトラストストアの共有をサポートしたので、別組織のメンバーアカウント間で共有してみました。
AWS CLI の更新履歴のとおり、使うことが出来ましたね。
トラストストアを再利用したい時って結構多い気がするので、なかなか助かるアップデートなのではないでしょうか。